package school;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: jack
 * @date: 2018/10/27 15:3415
 * @version: 0.1
 * @description: <学习泛型数据类型>
 * @modified: <修改说明>
 **/
public class TestGeneric {
    /**
     *带有泛型Course，的List类型属性
     */
    public List<Course> courses;

    public TestGeneric(){
    this.courses=new ArrayList<Course>();
    }

    /**
     * 测试添加
     */
    public void testAdd(){
        Course cr=new Course("1","大学论语");
        courses.add(cr);
        //泛型集合中，不能添加泛型及子类型规定以外的数据对象，否则编译报错
        //courses.add("能否添加不符合Course规范的奇怪字符串呢？");
        Course cr2=new Course("2","沙漠骆驼");
        courses.add(cr2);

    }

    /**
     * 循环遍历数据
     *
     */
    public void testForEach(){
        System.out.println("课程如下：");
        for(Course cr:courses){
            System.out.println(cr.getId()+":"+cr.getame());
        }
    }

    /**
     * 测试泛型集合可以添加泛型子类型的对象示例，ChildCourse为例
     *
     */
    public void testChild(){
        ChildCourse ccr=new ChildCourse();
        ccr.setId("3");
        ccr.setName("子类课程");
        courses.add(ccr);
    }

    /**
     * 泛型不能使用基本类型
     *
     */
    public void testBasicType(){
        //下面一行报错，必须用基本类型的包装类
       // List<int> list=new ArrayList<int>();
        List<Integer> list=new ArrayList<Integer>();
        list.add(1);
        System.out.println("基本类型必须使用包装类作为泛型!"+list.get(0));

    }

    public static void main(String[] args){
    TestGeneric tg=new TestGeneric();
    tg.testAdd();
    tg.testForEach();
    tg.testChild();
    tg.testForEach();
    tg.testBasicType();
    }

}
